import smtplib
import base64
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 网易企业邮箱配置信息
username = "tanzp_cs@hqyj.com"  # 您的企业邮箱地址
password = "TmbMXJVMcG76HQDs"  # 将此处替换为最新生成的授权码
smtp_server = "smtp.qiye.163.com"  # 网易企业邮箱的SMTP服务器地址
smtp_port = 465  # SSL加密的SMTP端口（一般使用465或994）

# 将本地图片 "hqyj_logo.png" 读取为 Base64 编码
with open("hqyj_logo.png", "rb") as image_file:  # 图片位于脚本同目录中
    base64_image = base64.b64encode(image_file.read()).decode()

# HTML签名内容，包括Base64编码的图片
signature_html = f"""
<div>
    <p>祝工作顺利！</p>
    <p>谭智鹏 | 教学部 | 长沙中心</p>
    <img src="data:image/png;base64,{base64_image}" alt="公司标志" width="500">
    <p>公司地址：长沙市岳麓区旺龙路辰泰科技园D座3楼华清远见<br>
       手机号码：15073403740<br>
       电话号码：0731-8620 2982<br>
       咨询热线：400-611-6270<br>
       电子邮件：tanzp_cs@hqyj.com</p>
    <p>集团官网：<a href="http://www.hqyj.com">www.hqyj.com</a><br>
       创客学院：<a href="http://www.makeru.com.cn">www.makeru.com.cn</a><br>
       研发中心：<a href="http://www.fsdev.com.cn">www.fsdev.com.cn</a></p>
    <p>北京·上海·深圳·成都·南京·武汉·西安·广州·沈阳·济南·重庆·长沙</p>
</div>
"""


def send_email(subject, body, to_email):
    # 创建一个多部分邮件对象
    msg = MIMEMultipart("alternative")
    msg['From'] = username
    msg['To'] = to_email
    msg['Subject'] = subject

    # 将邮件正文和签名合并
    full_body_html = f"<p>{body}</p><br>{signature_html}"

    # 使用HTML格式添加邮件正文，并指定UTF-8编码
    msg.attach(MIMEText(full_body_html, 'html', 'utf-8'))

    try:
        # 使用SMTP_SSL连接到服务器
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.set_debuglevel(1)  # 启用调试模式以查看详细的通信过程
            server.login(username, password)
            server.sendmail(username, to_email, msg.as_string())
            print("邮件发送成功")
    except smtplib.SMTPAuthenticationError:
        print("SMTP认证错误：请检查邮箱地址和授权码是否正确")
    except smtplib.SMTPConnectError:
        print("SMTP连接错误：无法连接到服务器")
    except Exception as e:
        print("邮件发送失败:", e)


# 示例调用
send_email(
    subject="长沙中心嵌入式 2408班 C++ 第 3 天 11月5日 授课日报",
    body="各位老师好！以下是 长沙中心嵌入式 2408班 C++ 第 3 天 11月5日 授课日报,请查收! \n  【授课内容】授课内容全局函数友元类做友元成员函数做友元加号运算符重载左移运算符重载递增运算符重载赋值运算符重载关系运算符重载函数调用运算符重载中括号运算符重载指针成员访问运算符重载重点难点运算符重载的规则与注意事项友元的概念及其对封装性的影响不同类型运算符重载的实现方式作业创建一个类，实现加号运算符重载，并编写测试代码。实现一个类，演示友元函数与友元类的用法。编写一个类，实现多个运算符的重载，测试它们的组合使用。",
    to_email="tanzp_cs@hqyj.com"  # 收件人邮箱地址
)
